iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
AI & Data

紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度系列 第 7

DAY 7 「 K-means聚類演算法」手寫數字數據集(如 MNIST 數據集)案例實作~

  • 分享至 

  • xImage
  •  

K-means超級好用~~可以應用於許多領域和數據集~~

K-means 是一種簡單且廣泛使用的聚類(Clustering)算法,目標是將一組數據劃分為 K 個不同的群體,使得每個數據點屬於與其最接近的群體。
初始化:隨機選擇 K 個數據點作為初始的群體中心(centroid)。
分配:對於每個數據點,計算其與每個群體中心的距離,並將其分配到最近的群體中心所在的群體中。
更新中心:對於每個群體,計算其所有成員的平均值,並將這個平均值作為新的群體中心。
重複:重複步驟 2 和 3,直到群體中心不再發生變化或達到一個預先定義的停止條件(如最大迭代次數)。
收斂:一旦群體中心不再發生變化,算法收斂,並且每個數據點都被分配到了一個群體中。

  • 顧客分群:在市場營銷中,可以使用 K-means 將顧客分成不同的群體,以便針對每個群體制定不同的營銷策略。
  • 圖像分割:將圖像分成具有相似特徵的區域,這在計算機視覺和圖像處理中很常見。
  • 新聞主題分類:將新聞文章分類到不同的主題群體中,可以幫助人們更容易找到感興趣的新聞。
  • 客戶購買行為分析:可以通過將客戶根據其購買行為聚類為不同的群體,來了解不同群體的購買習慣和偏好。
  • 影像壓縮:使用 K-means 將圖像中的顏色進行聚類,可以實現對圖像的壓縮。
  • 推薦系統:根據用戶的行為和偏好,將用戶分為不同的群體,然後向每個群體推薦相關的內容或產品。
  • 維度縮減:K-means 可以用於對高維數據進行降維,以便更好地進行視覺化或後續分析。
  • 運輸和物流:將貨物或運輸路徑分成不同的群體,以優化運輸和物流策略。
from sklearn.datasets import load_digits
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 載入手寫數字數據集
digits = load_digits()
X = digits.data
y = digits.target

# 初始化 K-means 模型,指定要分為幾個群體(這裡指定為 10,因為我們要分類 0 到 9 的數字)
kmeans = KMeans(n_clusters=10, random_state=42)

# 進行 K-means 聚類
kmeans.fit(X)

# 獲取聚類結果
labels = kmeans.labels_

# 繪製聚類中心(這裡展示了每個群體的平均數字)
fig, axes = plt.subplots(2, 5, figsize=(8, 4))
for i, ax in enumerate(axes.flat):
    ax.imshow(kmeans.cluster_centers_[i].reshape(8, 8), cmap='binary')
    ax.set_title(f'Cluster {i}')
    ax.axis('off')
plt.show()

上一篇
DAY 6 「 邏輯回歸(Logistic Regression)」鳶尾花實作~
下一篇
DAY 8 「 SVM(Support Vector Machine)」非線性分類案例 - 圓環數據集和回歸案例 - 波士頓房價預測案例實作~
系列文
紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言